<Html>
    <head>
        <title>App.vue  / App.uvue</title>
    </head>
    <body>
        <script>
            // App.vue  、 App.uvue

                    /*
                        一、概述

                                  App.vue/uvue是uni-app的主组件。uni-app js引擎版是app.vue。uni-app x是app.uvue。以下出现的app.vue一般泛指包含了app.uvue。

                                  所有的页面都是在App.vue 下进行切换的，是应用入口文件。

                                  但App.vue 本身不是页面，这里不能编写视图元素，也就没有 <template>.

                                  这个文件的作用包括：  ①、监听应用生命周期
                                                
                                                      ②、配置全局样式  

                                                      ③、配置全局的存储 globalData
                                  
                    */

                    /*
                         二、应用生命周期

                                    uni-app 支持如下应用生命周期函数：


                                    1、生命周期函数列表

                                                            函数名                     说明                                                            平台兼容
                                                            
                                                        ①、onLaunch            当uni-app初始化完成时触发(全局只触发一次)，参数为应用启动参数，
                                                                                同 uni.getLaunchOptionsSync的返回值   
                                                                                
                                                        ②、onShow              当 uni-app 启动，或从后台进入前台显示，参数为应用启动参数，
                                                                                同uni.getLaunchOptionsSync的返回值相同                    

                                                        ③、onHide              当 uni-app 从前台进入后台

                                                        ④、onError             当uni-app 报错时触发                                                 app-uvue 不支持

                                                        ⑤、onUniNViewMessage   对 nvue 页面发送的数据进行监听，可参考 nvue 向 vue 通讯                app-uvue 不支持

                                                        ⑥、onUnhandledRejection  对未处理的Promise 拒绝时间监听函数 (2.8.1+app-uvue暂不支持)          app-uvue 不支持

                                                        ⑦、onPageNotFount      页面不存在监听函数                                                    app-uvue 不支持

                                                        ⑧、onThemeChange       监听系统主题变化                                                      app-uvue 不支持

                                                        ⑨、onLastPageBackPress 最后一个页面按下 Andorid back键，常用于自定义退出                       app-uvue-android 3.9+

                                                        ⑩、onExit              监听应用退出                                                          app-uvue-android 3.9+   
                                                        
                                                        
                                    2、示例：

                                            <、script>

                                                // 只能在App.vue里监听应用的生命周期

                                                export default {
                                                    onLaunch: function(options) {
                                                        console.log('App Launch')
                                                        console.log('应用启动路径：', options.path)
                                                    },
                                                    onShow: function(options) {
                                                        console.log('App Show')
                                                        console.log('应用启动路径：', options.path)
                                                    },
                                                    onHide: function() {
                                                        console.log('App Hide')
                                                    }
                                                }
                                            <、/script>

                                    3、注意：

                                            ①、应用生命周期仅可在 App.vue 中监听，在其他页面监听无效

                                            ②、一组合式API使用时，在Vue2 和 Vue3 中存在一定区别，请分别参考 ： 

                                                            Vue2 组合式 API 使用文档 ： https://uniapp.dcloud.net.cn/tutorial/vue-composition-api.html

                                                            Vue3 组合式 API 使用文档 :  https://uniapp.dcloud.net.cn/tutorial/vue3-composition-api.html

                                            ③、onLaunch 里进行页面跳转，如遇白屏报错，请参考  ：https://ask.dcloud.net.cn/article/35942

                                            ④、App.vue 不能写模板

                                            ⑤、onPageNotFound 页面实际上已经打开了 (比如通过分享卡片、小程序码)且发现页面不存在，才会触发，
                                            
                                                        api跳转不存在嗯页面不会触发(如 uni.navigateTo)

                    */

                    /*
                           三、globalData

                                    小程序有globalData,这是一种简单的全局变量机制。这套机制在 uni-app 里也可以使用，并且全端通用。

                                    当然 vue 框架的全局变量，另有其他方式定义。


                                    ★、以下是 App.vue 中定义 globalData 的相关配置

                                            <、script>  
                                                export default {  
                                                    globalData: {  
                                                        text: 'text'  
                                                    }
                                                }  
                                            <、/script>  

                                    js中操作 globalData的方式如下：  getApp().globalData.text ='test'

                                    在应用 onLaunch 时，getApp对象还未获取，暂时可以使用 this.globalData获取 globalData

                                    如果需要把 globalData 的数据绑定到页面上，可以在页面的 onShow 页面生命周期里进行变量重复值。

                                    nvue 的weex编译模式中使用 globalData的话，由于 weex 生命周期不支持 onShow ，但熟悉5+的话，
                                    
                                    可利用监听webview的addEventListener show事件实现onShow效果，或者直接使用weex生命周期中的beforeCreate。但建议开发者使用uni-app编译模式，而不是weex编译模式。

                                    globalData是简单的全局变量，如果使用状态管理，请使用vuex（main.js中定义）
                    */

                    /*
                         四、全局样式

                                在App.vue中，可以定义一些全局通用样式，例如需要加一个通用的背景色，首屏页面渲染的动画等都可以写在App.vue中。

                                注意如果工程下同时有vue和nvue文件，全局样式的所有css会应用于所有文件，而nvue支持的css有限，
                                
                                编译器会在控制台报警，提示某些css无法在nvue中支持。此时需要把nvue不支持的css写在单独的条件编译里。
                                
                                如：

                                        <style>
                                            /* #ifndef APP-PLUS-NVUE 
                                            @import './common/uni.css';
                                            /* #endif
                                        </style>
                    */
        </script>
    </body>
</Html>